﻿namespace Qi.Data.Contracts
{
    using System;
    using System.Linq;
    using System.Linq.Expressions;

    public interface IRepository<in TId, TEntity> where TEntity : class
    {        
        IQueryable<TEntity> GetAll(params Expression<Func<TEntity, object>>[] includes);

        TEntity Get(TId id);

        void Add(TEntity entity);

        void Update(TEntity entity);

        void Delete(TEntity entity);

        void Delete(TId id);
    }
}